/*把file1中的内容复制到file2中*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

//./12-fseek   file1
// arg[0] argv[1]
int main(int argc, char const *argv[])
{
    FILE *fp1;
    if (argc != 2)
    {
        fprintf(stderr, "运行程序时，请带入参数 ./12-fseek file1 \n");
        exit(-1);
    }
    //

    fp1 = fopen(argv[1], "r+");
    if (fp1 == NULL)
    {
        perror("fopen");
        exit(-1);
    }

    //先计算文件的大小
    fseek(fp1, 0, SEEK_END);    //把文件位置设置到文件末尾
    long file_pos = ftell(fp1); //获取文件位置的返回值，就是文件的大小
    
    int t1,t2;
    for (long i = 0; i < file_pos / 2; i++)
    {
        //1.把文件光标表移动到i的位置，第一个位置
        fseek(fp1, i, SEEK_SET);
        //2.读取文件的第i个字符
        t1 = fgetc(fp1);

        //3.在把光标移动到file_pos-i-1的位置上，（文件的最后的位置）
        fseek(fp1,file_pos-i-1, SEEK_SET);

        //4.读取文件中的file_pos-i的字符
        t2 = fgetc(fp1);
        
        //5.把文件光标表移动到i的位置
        fseek(fp1, i, SEEK_SET);

        //6.把光标移动到i的位置
        fputc(t2,fp1);

        //7.在把光标移动到file_pos-i-1的位置上，（文件的最后的位置）
        fseek(fp1,file_pos-i-1, SEEK_SET);

        //8.读取文件中的file_pos-i的字符
        fputc(t1,fp1);
    }

    fclose(fp1);

    return 0;
}
